package sort;

import java.awt.font.NumericShaper;
import java.util.Arrays;

/**
 * @description:
 * @author: jhy
 * @time: 2021/4/18 16:24
 */

//冒泡排序
public class BubbleSort {


    public static void main(String[] args) {

        int[] ints = {9,8,7,6,5,1,2,3,4};

        //BubbleSort.bubbleSort(ints);
        BubbleSort.bubbleSort2(ints);
        System.out.println(Arrays.toString(ints));

    }

    public static void bubbleSort(int[] nums){
        //大的数向尾部移动
        for(int i = 0;i < nums.length;i++){ //循环n次
            for(int j = 0;j < nums.length - i - 1;j++){ //每次都从数组头开始
                //如果前面的数大于后面的数，则交换
                if(nums[j] > nums[j+1]){
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
    }

    //优化后的冒泡排序
    public static void bubbleSort2(int[] nums){
        boolean hasChange = true;
        for(int i = 0;i < nums.length;i++){//循环n次
            //初始该轮没有进行交换
            hasChange = false;
            for(int j = 0;j < nums.length - i - 1;j++){//每次比较都从数组头开始
                if(nums[j] > nums[j+1]){
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                    hasChange = true;
                }
            }
            if(!hasChange){
                break;
            }
        }
    }
}
